from django.views import View

# 导入解析用户信息函数
# 获取数据库连接
from SaaSDevelTool.data_mysql_data import db
# 判断梯队位置
from SaaSDevelTool.data_operation import is_number
# 导入返回响应
from SaaSDevelTool.data_return_response import create_response
# 导入错误信息装饰器
from SaaSDevelTool.data_return_response import error_message_detection

"""功能包梯队位置添加"""


class SaaSDevelModelPackAgeLevelCreate(View):
    @error_message_detection
    def post(self, request):
        # 获取梯队位置名称
        echelon_name = request.POST.get("echelon_name")
        # 获取功能包编号
        echelon_package_id = request.POST.get("echelon_package_id")
        # 获取层级数字
        echelon_level = request.POST.get("echelon_level")
        # 获取大模块编号
        md_id = request.POST.get("md_id")

        # 判断参数类型
        if not all([echelon_name, echelon_package_id, echelon_level, md_id]):
            return create_response(code=400, msg="""添加失败，梯队位置名称，功能包，梯队层级，大模块编号等为必传参数。""")

        # 判断梯队位置名称
        if len(echelon_name) > 30:
            return create_response(code=400, msg="添加失败，梯队名称长度最大为30位。")

        # 判断功能包
        query_sum_package_level_sql = """
            SELECT
                id,
                echelon_name,
                echelon_level,
                md_id
            FROM
                db_saas_center.sum_package_level 
            WHERE 
                echelon_name = '{}' 
            AND 
                md_id = {}
        """.format(echelon_name, md_id)

        # 调用方法获取对应的数据
        query_sum_package_level_data = db.findOne(query_sum_package_level_sql)

        # 进行查询操作
        if query_sum_package_level_data:
            # 返回对应的响应
            return create_response(code=400, msg="添加失败，当前模块已有对应的梯队名称。")

        # 判断梯队位置数据格式
        if not is_number(echelon_level):
            return create_response(code=400, msg="添加失败，当前梯队位置参数传递错误。")

        # 判断梯队位置参数
        if not int(echelon_level) == 3 and not int(echelon_level) == 2:
            return create_response(code=400, msg="添加失败，层级只能选择3级或者2级。")

        # 判断是否重复
        query_sum_package_level_sql = """
            SELECT 
                echelon_name, 
                md_id
            FROM 
                db_saas_center.sum_package_level 
            WHERE 
                echelon_name = '{}'
            AND 
                md_id = {}
        ;""".format(echelon_name, md_id)
        # 判断
        if db.findOne(query_sum_package_level_sql):
            return create_response(code=400, msg="当前大模块已有对应的梯队名称。")

        # 进行对应的操作(拼接sql语句)
        create_sum_package_level_sql = """
            INSERT INTO 
                db_saas_center.sum_package_level(
                    echelon_name, 
                    echelon_package_id, 
                    echelon_level, 
                    md_id
                )
            VALUES
                ('{}',{}, {}, {})
            ;""".format(echelon_name, echelon_package_id, echelon_level, md_id)
        # 执行插入操作
        db.update(create_sum_package_level_sql)

        # 返回响应
        return create_response(code=200, msg="层级添加成功。")
